home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1992-02-26 | 4.5 KB | 211 lines |
- Dim X(20),Y(20)
- Break Off
- Global MNO
- I=Execall(-132) : Rem Forbid
- Screen Open 0,320,200,4,Lowres
- Palette $79A,$245,$EFF,$9BC,$0,$FFF : Colour Back Colour(0) : View
- Reserve Zone 7
- Flash Off : Curs Off : Cls 0 : Paper 0
- '
- Extension_17_0116 1
- Extension_17_0116 0
- '
- NO$="0" : MNO=0
- BUTTONS:
- Data 0,0,,20,NO$,"Mouse Port"
- Data 51,34,,20,"Click here for Multi Mouse",""
- Data 51,60,,20,"Click for Smouse",""
- Data 51,87,,20,"Click here for Tricky Mouse",""
- Data 51,115,,20,"Click here for Awkward Mouse",""
- Data 51,143,,20,"Click here for Normal Mouse",""
- Data 51,171,,20,"Click here to QUIT",""
- Restore BUTTONS
- For A=1 To 7
- Read X,Y,X1,Y1,T$,L$
- _MYBUTTONS[A,X,Y,X1,Y1,T$,L$,True]
- Next A
- Hide
- Double Buffer
- Autoback 1
- Bob Update Off
- Do
- X= Extension_17_00DA(MNO) : Y= Extension_17_00F4(MNO)
- Sprite 0,X,Y,1
- MZ= Extension_17_0132(MNO)
- If Extension_17_011E(MNO) and MZ>0
- M=MZ
- If M=1 : Gosub 1 : End If
- Gosub INDENT
- If M=2 : Gosub 2 : End If
- If M=3 : Gosub 3 : End If
- If M=4 : Gosub 4 : End If
- If M=5 : Gosub 5 : End If
- If M=6 : Gosub 6 : End If
- If M=7 : Gosub 7 : End If
- End If
- '
- If M=2 Then Gosub MULTI
- If M=3 Then Gosub SOFT
- If M=4 Then Gosub TRICKY
- If M=5 Then Gosub AWKARD
- Loop
- '
- CLEAR:
- For A=0 To 20
- Bob Off A : X(A)=0 : Y(A)=0
- Next A
- Bob Update
- Return
-
- INDENT:
- Gosub CLEAR
- Restore BUTTONS
- For A=0 To MZ-1
- Read X,Y,X1,Y1,T$,L$
- Next A
- _MYINDENT[MZ,X,Y,X1,Y1,T$,True,True]
- Return
-
- 1 For N=2 To 7 : Sprite N,0,0, : Next
- If MNO=0 Then MNO=1 Else MNO=0
- NO$=Str$(MNO)-" "
- Print NO$
- Return
-
- 2 N=0
- For N=2 To 7
- X(N)= Extension_17_00DA(MNO)
- Y(N)= Extension_17_00F4(MNO)
- Sprite N,X(N),Y(N),1
- Next
- Return
- '
- '
- '
- '
- 3 For N=2 To 7 : Sprite N,0,0, : Next
- X= Extension_17_00DA(MNO) : Y= Extension_17_00F4(MNO) : Sprite 1,X,Y,1 : Hide On
- Return
- '
- '
- 4
- For N=2 To 7 : Sprite N,0,0, : Next
- Return
- '
- '
- 5
- For N=2 To 7 : Sprite N,0,0, : Next
- Return
- '
- '
- '
- 6 For N=2 To 7 : Sprite N,0,0, : Next
- Return
- '
- 7
- I=Execall(-138) : Rem Permit
- Break On
- Edit
- MULTI:
- X(0)= Extension_17_00DA(MNO) : Y(0)= Extension_17_00F4(MNO)
- For N=1 To 7
- X=Abs(X(N)-X(N-1))
- Y=Abs(Y(N)-Y(N-1))
- If X(N)>X(N-1) Then Add X(N),-(X/4)
- If X(N)<X(N-1) Then Add X(N),X/4
- If Y(N)>Y(N-1) Then Add Y(N),-(Y/4)
- If Y(N)<Y(N-1) Then Add Y(N),Y/4
- Sprite N,X(N),Y(N),2
- Next
- Return
-
- TRICKY:
- A= Extension_17_00DA(MNO) : C= Extension_17_00F4(MNO)
- Repeat
- Wait Vbl
- B= Extension_17_00DA(MNO) : D= Extension_17_00F4(MNO)
- Until A<>B or C<>D or Extension_17_011E(MNO)
- If A<B and X>142 Then Add X,-4
- If A>B and X<434 Then Add X,4
- If C<D and Y>64 Then Add Y,-4
- If C>D and Y<236 Then Add Y,4
- ' Mouse Clip MNO
- Extension_17_00C8 MNO,X : Extension_17_00E2 MNO,Y : Sprite 1,X,Y,1
- Return
- AWKARD:
- Repeat
- If Rnd(29)=1
- Extension_17_00C8 MNO, Extension_17_00DA(MNO)+Rnd(2)-1
- Extension_17_00E2 MNO, Extension_17_00F4(MNO)+Rnd(2)-1
- X= Extension_17_00DA(MNO)
- Y= Extension_17_00F4(MNO)
- Sprite 0,X,Y,1
- End If
- Until Extension_17_011E(MNO)
- Return
-
- SOFT:
- X(0)= Extension_17_0156(MNO) : Y(0)= Extension_17_0170(MNO)
- For N=1 To 15
- X=Abs(X(N)-X(N-1))
- Y=Abs(Y(N)-Y(N-1))
- If X(N)>X(N-1) Then Add X(N),-(X/4)
- If X(N)<X(N-1) Then Add X(N),X/4
- If Y(N)>Y(N-1) Then Add Y(N),-(Y/4)
- If Y(N)<Y(N-1) Then Add Y(N),Y/4
- Bob N,X(N),Y(N),1
- Next
- Bob Update
- Wait Vbl
- Return
- Procedure _MYBUTTONS[NO,X,Y,XW,Y1,TEX$,LABEL$,FLAG]
- Set Pattern 0
- Gr Writing 1
- Shared WINDCOL
- If XW<(Len(TEX$))*8 : XW=(Len(TEX$)+2)*8 : End If
- H=Y1
- X1=XW+X
- Y1=Y1+Y-1
- Ink WINDCOL
- Bar X,Y To X1,Y1
- Set Zone NO,X,Y To X1,Y1
- If FLAG=-1 Then Ink 1 Else Ink 2
- Box X,Y To X1,Y1
- If FLAG=-1 Then Ink 2 Else Ink 1
- Polyline X,Y1 To X,Y To X1,Y
- H=H/2
- L=Text Length(TEX$)
- Ink 1,WINDCOL : DROPTEXT[X1-XW/2-L/2,Y+H+2,TEX$]
- If LABEL$>""
- DROPTEXT[X1+5,Y+H+2,LABEL$]
- End If
- End Proc
- Procedure _MYINDENT[NO,X,Y,XW,YH,TEX$,FLAG,_WAITMK]
- Set Pattern 0
- Gr Writing 1
- Shared WINDCOL
- If XW<(Len(TEX$))*8 : XW=(Len(TEX$)+2)*8 : End If
- H=YH
- X1=XW+X
- Y1=YH+Y-1
- Ink 3 : Bar X,Y To X1,Y1
- If FLAG=-1 Then Ink 2 Else Ink 1
- Box X,Y To X1,Y1
- If FLAG=-1 Then Ink 1 Else Ink 2
- Polyline X,Y1 To X,Y To X1,Y
- L=Text Length(TEX$)
- H=H/2
- Ink 1,3 : DROPTEXT[X1-XW/2-L/2,Y+H+2,TEX$]
- If _WAITMK : Repeat : Multi Wait : Until Extension_17_011E(MNO)=0 : End If
- _MYBUTTONS[NO,X,Y,XW,YH,TEX$,"",FLAG]
- End Proc
- Procedure DROPTEXT[X,Y,T$]
- Autoback 2
- Gr Writing 0
- Ink 1
- Text X+1,Y+1,T$
- Ink 2
- Text X,Y,T$
- Gr Writing 1
- Autoback 1
- End Proc